home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr47 / x.zip / X.DOC < prev    next >
Text File  |  1993-01-30  |  5KB  |  108 lines

  1.     Keyboard Xtender V1.0
  2.  
  3.     X.SYS is a keyboard buffer extender program.  This program extends
  4.     the keyboard buffer from 16 keystrokes to 256 keystrokes.  No longer
  5.     will you have to listen to the "beep-beep-beep" when your keyboard
  6.     buffer is full!
  7.  
  8.     This program is a device driver that should be loaded in your
  9.     CONFIG.SYS file.  Copy X.SYS to your root directory.  You should
  10.     make a bootable floppy disk just in case X.SYS causes problems on
  11.     your machine.  If your machine locks up, you can boot off of the
  12.     floppy drive and remove X.SYS from your CONFIG.SYS file.  To install
  13.     X.SYS, add the following line to your CONFIG.SYS file:
  14.  
  15.          DEVICE=C:\X.SYS
  16.  
  17.     That's all there is to it!  When you reboot your machine you will
  18.     see a status message indicating the Keyboard Xtender was loaded.
  19.  
  20.     Note: Because of the way that X.SYS works, you cannot load X.SYS
  21.           into high memory.  But hey, the program is only 775 bytes
  22.           long so it won't chew up too much of the precious 640K of RAM.
  23.  
  24.  
  25.     X.SYS is Snareware, once you try it you're hooked!
  26.  
  27.  
  28.     Now for the legal mumbo-jumbo:
  29.     
  30.     Limitation of Liability.  In no event shall I be liable for any
  31.     incidental, consequential, or punitive damages whatsoever arising
  32.     out of use of this Keyboard Xtender software (X.SYS), including
  33.     without limitation any or all damages for loss of profits, business
  34.     interruption, loss of information, or any pecuniary loss, even if
  35.     I have been advised of the possiblity of such damages.
  36.  
  37.  
  38.     To build X.SYS just assemble X.ASM (I used Turbo Assembler), then
  39.     link the object file to produce an X.EXE file (Tlink works nice).
  40.     Use EXE2BIN to convert the EXE file to a SYS binary file.
  41.  
  42.  
  43.     "Gee!, Mr. Wizard, how does it work?"
  44.  
  45.     "Well Johnny, normally your keyboard buffer occupies a 32 byte portion
  46.     of low memory in the BIOS memory segment (segment 40 hex).  The buffer
  47.     usually resides at 40:1E through 40:3D.  These 32 bytes create a
  48.     circular queue that the keyboard interrupt routine in ROM uses to store
  49.     any character received from the keyboard.  The buffer actually contains
  50.     the scan code and the character code for each character entered on the
  51.     keyboard.  That's why you only get 16 characters from a 32 byte buffer."
  52.  
  53.     "The BIOS read keyboard interrupt routine reads this buffer when programs
  54.     are waiting for keyboard input.  Also stored in the BIOS memory segment
  55.     are the head and tail pointers for this circular keyboard buffer (at
  56.     40:1A and 40:1C, respectively).  These head and tail pointers point to
  57.     the buffer position of any characters that have been received from the
  58.     keyboard but have not been read by an application yet.  When the head
  59.     and tail pointers are the same, the buffer is empty.  When the head
  60.     pointer is one position less than the tail pointer, the buffer is full.
  61.     If you try to enter keystrokes when the buffer is full, you get the
  62.     "beep-beep-beep" sound from the BIOS keyboard interrupt routine."
  63.  
  64.     "What we want to do is expand this keyboard buffer to allow more
  65.     keystrokes to be entered while the computer is processing previous
  66.     commands.  There are two methods of doing this, the hard way, and
  67.     the easy way.  Programmers (i.e. Hackers), like myself, basicly being
  68.     lazy, will choose to do things the easy way.  The hard way involves
  69.     writing a TSR that handles the BIOS keyboard interrupt routine function
  70.     and the BIOS read keyboard interrupt routine function and expanding the
  71.     buffer they use to a larger size.  This is too much like work!"
  72.  
  73.     "The normal BIOS keyboard interrupt routine and the BIOS read keyboard
  74.     interrupt routine unfortunately assume that the keyboard buffer is
  75.     ALWAYS going to exist in the BIOS memory segment (40 Hex).  This causes
  76.     a problem when you try to load a TSR that allocates more space for the
  77.     keyboard buffer, because by the time DOS and COMMAND.COM get loaded
  78.     (pun intended!), the next available memory is well beyond the 40 hex
  79.     BIOS memory segment.  We need a way to allocate some memory before
  80.     COMMAND.COM chews up it's memory."
  81.  
  82.     "We can do this by using a device driver!"
  83.  
  84.     "But Mr. Wizard, I thought device drivers were only used to talk to
  85.     physical or virtual devices.  And you said you didn't want to rewrite
  86.     the BIOS keyboard routines!"
  87.  
  88.     "You're right Johnny!  Device drivers normally are used to talk to
  89.     physical or virtual devices, but in this case all we want to do is
  90.     allocate a block of memory for the new keyboard buffer and modify
  91.     the BIOS memory segment keyboard head and tail pointers to point to
  92.     this new block.  We also have to update the start of buffer and end
  93.     of buffer addresses in the BIOS memory segment (at 40:80 and 40:82
  94.     respectively).  These start and end addresses tell the BIOS keyboard
  95.     routines where the buffer begins and ends in memory so that when the
  96.     head or tail is incremented, they will wrap around from the end of
  97.     the buffer back to the beginning of the buffer, hence the name
  98.     'circular queue'.  That's all there is to it!"
  99.  
  100.  
  101.     "Oh!, I see!  Well gee, Mr. Wizard!  Why does my tongue stick to a
  102.     metal flag pole on a cold winter day?"
  103.  
  104.     "Well, Johnny....."
  105.  
  106.     (to be continued)
  107.  
  108.